/**
 * 图片背景显示工具类
 * 用于生成帖子卡片的背景色和文字颜色
 */


/** 1.获取帖子图片背景样式
 * @param {Object} item - 帖子对象
 * @param {string} item.title - 帖子标题
 * @param {string|number} item.userId - 用户ID
 * @param {Array} item.imageUrlList - 图片URL列表
 * @returns {Object} 样式对象
 */
export function getPostImageStyle(item) {
    if (item.imageUrlList && item.imageUrlList.length > 0) {
        // 有图片时返回图片背景样式
        return {
            backgroundImage: `url(${item.imageUrlList[0]})`,
            backgroundSize: 'cover',
            backgroundPosition: 'center'
        };
    } else {
        // 无图片时返回生成的背景色样式
        return {
            backgroundColor: generateBackgroundColor(item.title, item.userId),
            display: 'flex',
            alignItems: 'center',
            justifyContent: 'center'
        };
    }
}

/** 2.获取帖子图片文字样式
 * @param {Object} item - 帖子对象
 * @param {string} item.title - 帖子标题
 * @param {string|number} item.userId - 用户ID
 * @returns {Object} 样式对象
 */
export function getPostTextStyle(item) {
    if (!item.imageUrlList || item.imageUrlList.length <= 0) {
        return {
            color: generateTextColor(item.title, item.userId),
            fontSize: '18px',
            fontWeight: 'bold',
            padding: '0 10px',
            textAlign: 'center',
            wordBreak: 'break-word'
        };
    }
    return {};
}



/** 生成背景色函数（根据标题和用户ID决定）
 * @param {string} title - 帖子标题
 * @param {string|number} userId - 用户ID
 * @returns {string} HSL颜色值
 */
export function generateBackgroundColor(title, userId) {
    if (!title || title.length === 0) {
        return '#ff9a9e'; // 默认颜色
    }
    
    // 获取标题的第一个字符
    const firstChar = title.charAt(0);
    
    // 使用标题首字符和用户ID的组合生成颜色
    const charCode = firstChar.charCodeAt(0);
    const userIdStr = userId ? userId.toString() : '0';
    const userIdNum = parseInt(userIdStr.slice(-6)) || 0; // 取用户ID后6位数字
    
    // 结合标题字符和用户ID生成更随机的颜色
    const combinedValue = charCode + userIdNum;
    
    // 生成HSL颜色，确保颜色鲜艳且饱和度适中
    const hue = combinedValue % 360; // 色相范围0-360
    const saturation = 60 + (combinedValue % 20); // 饱和度范围60-80
    const lightness = 65 + (combinedValue % 15); // 亮度范围65-80，确保不会太暗或太亮
    
    return `hsl(${hue}, ${saturation}%, ${lightness}%)`;
}

/** 生成文字颜色函数（根据背景色决定）
 * @param {string} title - 帖子标题
 * @param {string|number} userId - 用户ID
 * @returns {string} 文字颜色值
 */
export function generateTextColor(title, userId) {
    if (!title || title.length === 0) {
        return '#ffffff'; // 默认白色文字
    }
    
    // 获取标题的第一个字符
    const firstChar = title.charAt(0);
    const charCode = firstChar.charCodeAt(0);
    
    // 使用与generateBackgroundColor相同的逻辑计算颜色
    const userIdStr = userId ? userId.toString() : '0';
    const userIdNum = parseInt(userIdStr.slice(-6)) || 0; // 取用户ID后6位数字
    const combinedValue = charCode + userIdNum;
    
    // 生成与背景色相同的HSL值
    const hue = combinedValue % 360;
    const saturation = 60 + (combinedValue % 20);
    const lightness = 65 + (combinedValue % 15);
    
    if (saturation < 20) {
        return lightness > 50 ? '#333333' : '#ffffff'; // 饱和度很低时，按灰度处理
    }
   
    // 如果亮度大于72，使用黑色文字，否则使用白色文字
    return lightness > 72 ? '#333333' : '#ffffff';
}



/** 判断帖子是否有图片
 * @param {Object} item - 帖子对象
 * @param {Array} item.imageUrlList - 图片URL列表
 * @returns {boolean} 是否有图片
 */
export function hasPostImage(item) {
    return item.imageUrlList && item.imageUrlList.length > 0;
}

/** 判断帖子是否需要显示文字标题
 * @param {Object} item - 帖子对象
 * @param {Array} item.imageUrlList - 图片URL列表
 * @returns {boolean} 是否显示文字标题
 */
export function shouldShowPostText(item) {
    return !item.imageUrlList || item.imageUrlList.length <= 0;
}
